package com.itcast.dao;

import com.github.pagehelper.Page;
import com.itcast.health.pojo.CheckGroup;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;

/**
 * @author Gao
 * @version v1.0
 * @date 2019/11/18 14:03
 * @description 完成检查组的sql操作
 **/
@Repository
public interface CheckGroupMapper {


    /**
     * 新建查询组信息
     * @param checkGroup
     */
    void addCheckGroup(@Param("checkGroup") CheckGroup checkGroup);

    /**
     * 根据code查询检查组的信息
     * @param code
     * @return
     */
    CheckGroup findCheckGroupByCode(@Param("code") String code);

    /**
     * 方法一
     *   此种方式会一次连接一下数据库
     *     为服务器带来较大压力  所以采用在mapper中使用foreach遍历来一次性传输数据
     * 向t_checkgroup_checkitem中插入数据
     * @param checkGroupId  检查组id
     * @param checkitemId   检查项id
     */
/*
    void addCheckGroupAndCheckItem(@Param("checkGroupid") Integer checkGroupId, @Param("checkitemId") Integer checkitemId);
*/

    /**
     * 方式二  mapper中使用foreach遍历 只需要传一次数据
     * @param list
     */
    void addCheckGroupAndCheckItem(List<Map> list);

    /**
     * 根据code或name查询检查组
     * @param queryString
     * @return
     */
    Page<CheckGroup> findCheckGroupByCodeOrName(@Param("queryString") String queryString);

    /**
     * 根据id查询检查组
     * @param id
     * @return
     */
    CheckGroup findCkeckGroupById(@Param("id") Integer id);

    /**
     * 根据id查询检查组所包含的检查项id
     * @param id
     * @return
     */
    List<Integer> findcheckitemIdsByCheckGroupId(@Param("id") Integer id);

    /**
     * 为了避免意外  在添加前 需要删除该检查组对应的以前的检查项信息
     * @param checkGroupId
     */
    void deletecheckitemIdsBycheckGroupid(@Param("checkGroupid") Integer checkGroupId);

    /**
     * 修改检查组的信息
     * @param checkGroup
     */
    void editckeckGroupById(@Param("checkGroup") CheckGroup checkGroup);

    /**
     * 根据id删除对应的检查组信息
     * @param checkGroupid
     */
    void deleteCheckGroupById(@Param("checkGroupid") Integer checkGroupid);

    List<CheckGroup> findAll();
}
